# File generated from our OpenAPI spec
# frozen_string_literal: true

module Stripe
  module TestHelpers
    module Treasury
      class ReceivedCreditCreateParams < ::Stripe::RequestParams
        class InitiatingPaymentMethodDetails < ::Stripe::RequestParams
          class UsBankAccount < ::Stripe::RequestParams
            # The bank account holder's name.
            attr_accessor :account_holder_name
            # The bank account number.
            attr_accessor :account_number
            # The bank account's routing number.
            attr_accessor :routing_number

            def initialize(account_holder_name: nil, account_number: nil, routing_number: nil)
              @account_holder_name = account_holder_name
              @account_number = account_number
              @routing_number = routing_number
            end
          end
          # The source type.
          attr_accessor :type
          # Optional fields for `us_bank_account`.
          attr_accessor :us_bank_account

          def initialize(type: nil, us_bank_account: nil)
            @type = type
            @us_bank_account = us_bank_account
          end
        end
        # Amount (in cents) to be transferred.
        attr_accessor :amount
        # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
        attr_accessor :currency
        # An arbitrary string attached to the object. Often useful for displaying to users.
        attr_accessor :description
        # Specifies which fields in the response should be expanded.
        attr_accessor :expand
        # The FinancialAccount to send funds to.
        attr_accessor :financial_account
        # Initiating payment method details for the object.
        attr_accessor :initiating_payment_method_details
        # Specifies the network rails to be used. If not set, will default to the PaymentMethod's preferred network. See the [docs](https://stripe.com/docs/treasury/money-movement/timelines) to learn more about money movement timelines for each network type.
        attr_accessor :network

        def initialize(
          amount: nil,
          currency: nil,
          description: nil,
          expand: nil,
          financial_account: nil,
          initiating_payment_method_details: nil,
          network: nil
        )
          @amount = amount
          @currency = currency
          @description = description
          @expand = expand
          @financial_account = financial_account
          @initiating_payment_method_details = initiating_payment_method_details
          @network = network
        end
      end
    end
  end
end
